package tia1.dao;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import tia1.modelo.UsuarioTia;
/*
import trastienda.excepcion.DAOExcepcion;
import trastienda.excepcion.LoginExcepcion;
import trastienda.modelo.Usuario;
import trastienda.util.ConexionBD;
*/



public class UsuarioTiaDAO  {

	public UsuarioTia obtenerPorIdUsuario(String idUsuario) {
		String query = "id_usuario,pwd_usuario,nom_usuario,appm_usuario,appp_usuario,fecha_inicio,cat_usuario,std_usuario,id_carrera,num_ciclo "
				+ " from usuario where id_usuario=?";
		UsuarioTia vo = new UsuarioTia();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionTiaBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, idUsuario);
			rs = stmt.executeQuery();
			if (rs.next()) {
				vo.setIdUsuario(rs.getString("id_usuario"));
				vo.setPass(rs.getString("pwd_usuario"));
				vo.setNombre(rs.getString("nom_usuario"));
				vo.setMaterno(rs.getString("appm_usuario"));
				vo.setPaterno(rs.getString("appp_usuario"));
				vo.setfInicio(rs.getString("fecha_inicio"));
				vo.setCategoria(rs.getString("cat_usuario"));
				vo.setEstado(rs.getString("std_usuario"));
				vo.setCarrera(rs.getString("id_carrera"));
                                vo.setCarrera(rs.getString("num_ciclo"));
			}

		} catch (SQLException e) {
			System.err.println(e.getMessage());
//			throw new DAOExcepcion(e.getMessage());
		} finally {
//			this.cerrarResultSet(rs);
//			this.cerrarStatement(stmt);
//			this.cerrarConexion(con);
		}
		return vo;
	}

	public Collection<UsuarioTia> buscarPorNombre(String nombre)
//			throws DAOExcepcion
        {
//            id_usuario	pwd_usuario	nom_usuario	appm_usuario	appp_usuario
//                    fecha_inicio	cat_usuario	std_usuario	id_carrera


            String query = "select *  from usuario where nom_usuario like ?";


//		String query = "select id_usuario,pwd_usuario,nom_usuario,appm_usuario,appp_usuario,fecha_inicio,cat_usuario,std_usuario,id_carrera "
//				+ " from usuario where nombres like ?";
		Collection<UsuarioTia> c = new ArrayList<UsuarioTia>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionTiaBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, "%" + nombre + "%");
			rs = stmt.executeQuery();
			while (rs.next()) {
				UsuarioTia vo = new UsuarioTia();
				vo.setIdUsuario(rs.getString("id_usuario"));
				vo.setPass(rs.getString("pwd_usuario"));
				vo.setNombre(rs.getString("nom_usuario"));
				vo.setMaterno(rs.getString("appm_usuario"));
				vo.setPaterno(rs.getString("appp_usuario"));
				vo.setfInicio(rs.getString("fecha_inicio"));
				vo.setCategoria(rs.getString("cat_usuario"));
				vo.setEstado(rs.getString("std_usuario"));
				vo.setCarrera(rs.getString("id_carrera"));
                                vo.setCiclo(rs.getString("num_ciclo"));
				c.add(vo);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
//			throw new DAOExcepcion(e.getMessage());
		} finally {
//			this.cerrarResultSet(rs);
//			this.cerrarStatement(stmt);
//			this.cerrarConexion(con);
		}
		return c;
	}

	public UsuarioTia insertar(UsuarioTia vo)
//                throws DAOExcepcion
        {
		String query = "INSERT INTO usuario (id_usuario,pwd_usuario,nom_usuario,appm_usuario,appp_usuario,fecha_inicio,cat_usuario,std_usuario,id_carrera,num_ciclo) "
				+ "VALUES (?,?,?,?,?,?,?,?,?,?)";
		System.err.println(query);
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionTiaBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, vo.getIdUsuario());
			stmt.setString(2, vo.getPass());
			stmt.setString(3, vo.getNombre());
			stmt.setString(4, vo.getMaterno());
			stmt.setString(5, vo.getPaterno());
			stmt.setString(6, vo.getfInicio());
			stmt.setString(7, vo.getCategoria());
			stmt.setString(8, vo.getEstado());
			stmt.setString(9, vo.getCarrera());
                        stmt.setString(9, vo.getCiclo());

			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
//			throw new DAOExcepcion(e.getMessage());
		} finally {
//			this.cerrarStatement(stmt);
//			this.cerrarConexion(con);
		}
		return vo;
	}

	public UsuarioTia actualizar(UsuarioTia vo)
//                throws DAOExcepcion
        {
//            id_usuario,pwd_usuario,nom_usuario,appm_usuario,appp_usuario,fecha_inicio,cat_usuario,std_usuario,id_carrera
		String query = "UPDATE usuario SET pwd_usuario=?, mon_usuario=?, appm_usuario=?, appp_usuario=?, fecha_inicio=?, cat_usuario=?,"
				+ " std_usuario=?, id_carrera=?, num_ciclo=? WHERE id_usuario=?";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionTiaBD.obtenerConexion();
			stmt.setString(1, vo.getIdUsuario());
			stmt.setString(2, vo.getPass());
			stmt.setString(3, vo.getNombre());
			stmt.setString(4, vo.getMaterno());
			stmt.setString(5, vo.getPaterno());
			stmt.setString(6, vo.getfInicio());
			stmt.setString(7, vo.getCategoria());
			stmt.setString(8, vo.getEstado());
			stmt.setString(9, vo.getCarrera());
			stmt.setString(9, vo.getCiclo());
                        int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo actualizar");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
//			throw new DAOExcepcion(e.getMessage());
		} finally {
//			this.cerrarStatement(stmt);
//			this.cerrarConexion(con);
		}
		return vo;
	}

	public void eliminar(String idUsuario) 
//                throws DAOExcepcion
        {
		String query = "DELETE FROM usuario WHERE id_usuario=?";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionTiaBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, idUsuario);
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo eliminar");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
//			throw new DAOExcepcion(e.getMessage());
		} finally {
//			this.cerrarStatement(stmt);
//			this.cerrarConexion(con);
		}
	}

	public Collection<UsuarioTia> listarTodos()
//                throws DAOExcepcion
        {
		String query = "select id_usuario,pwd_usuario,nom_usuario,appm_usuario,appp_usuario,fecha_inicio,cat_usuario,std_usuario,id_carrera, num_ciclo"
				+ " from usuario";
		Collection<UsuarioTia> c = new ArrayList<UsuarioTia>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionTiaBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			rs = stmt.executeQuery();
			while (rs.next()) {
				UsuarioTia vo = new UsuarioTia();
				vo.setIdUsuario(rs.getString("id_usuario"));
				vo.setPass(rs.getString("pwd_usuario"));
				vo.setNombre(rs.getString("nom_usuario"));
				vo.setMaterno(rs.getString("appm_usuario"));
				vo.setPaterno(rs.getString("appp_usuario"));
				vo.setfInicio(rs.getString("fecha_inicio"));
				vo.setCategoria(rs.getString("cat_usuario"));
				vo.setEstado(rs.getString("std_usuario"));
				vo.setCarrera(rs.getString("id_carrera"));
                                vo.setCarrera(rs.getString("num_ciclo"));

				c.add(vo);





			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
//			throw new DAOExcepcion(e.getMessage());
		} finally {
//			this.cerrarResultSet(rs);
//			this.cerrarStatement(stmt);
//			this.cerrarConexion(con);
		}
		return c;
	}

	public UsuarioTia validar(String idUsuario, String clave)
//			throws DAOExcepcion, LoginExcepcion
        {
		String query = "select id_usuario,pwd_usuario,nom_usuario,appm_usuario,appp_usuario,fecha_inicio,cat_usuario,std_usuario,id_carrera, num_ciclo from usuario where id_usuario=? and pwd_usuario=?";
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		UsuarioTia vo = new UsuarioTia();
		try {
			con = ConexionTiaBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, idUsuario);
			stmt.setString(2, clave);
			rs = stmt.executeQuery();

			if (rs.next()) {


                                vo.setIdUsuario(rs.getString("id_usuario"));
				vo.setPass(rs.getString("pwd_usuario"));
				vo.setNombre(rs.getString("nom_usuario"));
				vo.setMaterno(rs.getString("appm_usuario"));
				vo.setPaterno(rs.getString("appp_usuario"));
				vo.setfInicio(rs.getString("fecha_inicio"));
				vo.setCategoria(rs.getString("cat_usuario"));
				vo.setEstado(rs.getString("std_usuario"));
				vo.setCarrera(rs.getString("id_carrera"));
                                vo.setCarrera(rs.getString("num_ciclo"));


				
			} else {
//				throw new LoginExcepcion("No existe");
			}
		}  catch (SQLException e) {
			System.err.println(e.getMessage());
//			throw new DAOExcepcion(e.getMessage());
		} finally {
//			this.cerrarResultSet(rs);
//			this.cerrarStatement(stmt);
//			this.cerrarConexion(con);
		}
		return vo;
	}

}
